package com.ctshk.rpc.order.custom.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.order.custom.dto.order.*;
import com.ctshk.rpc.order.custom.req.order.*;

/**
 * <p>
 * 订单收据 服务类
 * </p>
 *
 * @author 叶冠峰
 * @since 2021-02-22
 */
public interface ICustomizedOrderReceiptService {

    /**
     * 收據列表
     * @param req
     * @return
     */
    CustomOrderReceiptListCountDTO list(OrderReceiptListReq req);

    /**
     * 打印收據-旅客列表
     * @param req
     * @return
     */
    CustomOrderReceiptListTouristDTO listPrint(CustomOrderReceiptListTouristReq req);

    /**
     * 销售收据预览
     * @param req
     * @return
     */
    Result<CustomOrderReceiptDetailsPreviewDTO> preview(CustomOrderReceiptDetailsPreviewReq req);

    /**
     * 查看收據
     * @param req
     * @return
     */
    Result<CustomOrderReceiptInfoDTO> detail(CustomOrderReceiptDetailsIdReq req);

    /**
     * 重印收據
     * @param req
     * @return
     */
    Result<CustomOrderReceiptDetailsPreviewDTO> rePrint(CustomOrderReceiptDetailsRePrintReq req);

    /**
     * 收據作废
     * @param req
     * @return
     */
    Result invalid(CustomOrderReceiptInvalidReq req);


    /**
     * 打印整單收據
     * @param req
     * @return
     */
    Result invalidAll(OrderReceiptPrintAllReq req);

    /**
     * 打印
     * @param req
     * @return
     */
    Result printReceipt(CustomOrderReceiptDetailsRePrintReq req);

    /**
     * 批量打印
     * @param req
     * @return
     */
    Result printBatch(CustomOrderReceiptPrintBatchReq req);

    /**
     * 取消
     * @param id
     * @param userId
     * @return
     */
    Result cancel(Long id, Long userId);
}
